import os

# 使用文件和目录操作，定义一个统计指定目录大小的函数练习

# 定义一个统计指定目录大小的函数
def getDirectorySize(curpath):
    '''
    统计指定目录大小的函数
    :param curpath: 指定目录
    :return dirInfo={"fileCount":fileCount,"totalSize":totalSize}目录信息
    '''
    totalSize=0 # 定义一个存储目录总大小的变量
    fileCount=0 # 文件总数量
    # 判断当前路径是否是文件类型，如果是文件类型，获取文件大小；如果是目录类型，获取目录下的所有文件及文件夹
    if os.path.isfile(curpath):
        fileCount+=1
        totalSize += os.path.getsize(curpath)
    else:
        # 获取目录中所有文件列表
        dirlist=os.listdir(curpath)
        # 循环文件列表
        for f in dirlist:
            #判断是否是文件类型
            if os.path.isfile(f):
                fileCount += 1
                totalSize+=os.path.getsize(f)# 增加总目录大小的值
            else:# 是目录类型，递归调用自己，获取子目录下文件的大小
                tempDir=getDirectorySize(os.path.join(curpath,f))
                fileCount+=tempDir["fileCount"]
                totalSize += tempDir["totalSize"]
    dirInfo={"fileCount":fileCount,"totalSize":totalSize}
    return dirInfo

# 指定目录
targetPath=os.getcwd()
print("指定目录",targetPath)
# 调用函数获取指定目录信息
dirInfo=getDirectorySize(targetPath)
fileCount=dirInfo["fileCount"] # 文件总数量
totalSize=dirInfo["totalSize"] # 文件总大小
print("指定目录共{}个文件，总文件大小{}：".format(fileCount, totalSize))